<template>
  <div>

    <h2 v-if="fristView">请输入搜索内容</h2>
    <h2 v-if="loading">加载中</h2>
    <h2 v-if="errorMsg">{{ errorMsg }}</h2>
    <div class="row">
      <div class="card" v-for="(user,index) in users" :key="index">
        <a :href="user.url" target="_blank">
          <img :src="user.avatarUrl" style='width: 100px'/>
        </a>
        <p class="card-text">{{ user.name }}</p>
      </div>

    </div>
  </div>

</template>

<script>
import PubSub from 'pubsub-js'
import axios from "axios";

export default {
  name: "Main",
  data() {
    return {
      fristView: true,
      loading: false,
      errorMsg: '',
      users: null
    }
  },
  mounted() {
    PubSub.subscribe('search', (msg, searchName) => {

      this.fristView = false
      this.loading = true
      this.users = null
      this.errorMsg = ''

      const url = `https://api.github.com/search/users?q=${searchName}`
      axios.get(url).then(response => {
        this.loading = false
        this.users = response.data.items.map(item => ({
          url: item.html_url,
          avatarUrl: item.avatar_url,
          name: item.login
        }))

      }).catch(error => {
        this.loading = false
        this.errorMsg = '输入的内容有误'
      })
    })
  }

}
</script>

<style scoped>
.card {
  float: left;
  width: 33.333%;
  padding: .75rem;
  margin-bottom: 2rem;
  border: 1px solid #efefef;
  text-align: center;
}

.card > img {
  margin-bottom: .75rem;
  border-radius: 100px;
}

.card-text {
  font-size: 85%;
}

</style>
